package com.zz.common.codeGenerator.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zz.common.codeGenerator.dto.GenFormSchemaDto;
import com.zz.common.codeGenerator.entity.GenFormSchema;
import com.zz.common.base.dto.PageListResultDto;
import com.zz.common.base.param.QueryParam;
import java.util.List;
import java.util.Map;
/**
 * 表单Schema配置 服务接口
 * @author zl
 * @since 2025-11-22 08:29:41
 */
public interface GenFormSchemaService extends IService<GenFormSchema>{

    /**
     * 分页查询
     *
     * @param genFormSchemaDto 查询参数
     * @return PageListResultDto<GenFormSchemaDto>
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    PageListResultDto<GenFormSchemaDto> queryWithPage(GenFormSchemaDto genFormSchemaDto, QueryParam queryParam);

    /**
     * 不分页查询
     *
     * @param genFormSchemaDto 查询参数
     * @return List<GenFormSchemaDto>
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    List<GenFormSchemaDto> queryWithNoPage(GenFormSchemaDto genFormSchemaDto);

    /**
     * 根据id查询
     *
     * @param id 主键
     * @return GenFormSchemaDto
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    GenFormSchemaDto queryById(String id);

    GenFormSchemaDto queryByTableId(String tableId);

    /**
     * 根据主键查询单表数据
     *
     * @param id 主键
     * @return List<GenFormSchemaDto>
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    List<GenFormSchemaDto> queryByIds(List<String> id);

    /**
     * 保存
     *
     * @param genFormSchemaDto 对象
     * @return GenFormSchemaDto
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    GenFormSchemaDto save(GenFormSchemaDto genFormSchemaDto);

    /**
     * 批量保存
     *
     * @param genFormSchemaDtos 对象
     * @return List<GenFormSchemaDto>
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    List<GenFormSchemaDto> saveBatch(List<GenFormSchemaDto> genFormSchemaDtos);

    List<GenFormSchemaDto> saveOrUpdateWithTableIdBatch(List<GenFormSchemaDto> genFormSchemaDtos);

    /**
     * 修改
     *
     * @param genFormSchemaDto 对象
     * @return GenFormSchemaDto
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    GenFormSchemaDto modify(GenFormSchemaDto genFormSchemaDto);

    /**
     * 批量修改
     *
     * @param genFormSchemaDtos 对象
     * @return List<GenFormSchemaDto>
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    List<GenFormSchemaDto> modifyBatch(List<GenFormSchemaDto> genFormSchemaDtos);

    /**
     * 物理删除
     *
     * @param id 主键
     * @return int
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    int trueDelete(String id);

    void trueDeleteBatch(List<String> ids);

    void trueDeleteByTableIds(List<String> tableIds);

    /**
     * 逻辑删除
     *
     * @param id 主键
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    void delete(String id);

    /**
     * 批量逻辑删除
     *
     * @param ids
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    void deleteBatch(List<String> ids);

    /**
     * 插入
     *
     * @param genFormSchemaDto 对象
     * @return GenFormSchemaDto
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    GenFormSchemaDto insert(GenFormSchemaDto genFormSchemaDto);

    /**
     * 指定主键插入
     *
     * @param genFormSchemaDto 对象
     * @return GenFormSchemaDto
     * @create: 2025-11-22 08:29:41
     * @author zl
     * @see
     * @since 1.0
     */
    GenFormSchemaDto insertWithId(GenFormSchemaDto genFormSchemaDto);

    /**
     * 查询指定业务表的最新Schema
     * @param tableId 业务表ID
     * @return 最新的表单Schema
     */
    GenFormSchemaDto queryLatestByTableId(String tableId);

}
